#ifndef ARRAYLIST_H_
#define ARRAYLIST_H_

#include <vector>
using namespace std;

template <typename T> class ArrayList
{
	private:
		T *array;
		int array_length;
	public:
		ArrayList();
		ArrayList(vector<T> vect);
		ArrayList(int num);
		ArrayList<T> operator= (vector<T> vect);
		int add(T obj);
		int add(int at, T obj);
		int push_back(T obj);
		int size();
		T& at(int index);
		T& get(int index);
		T& operator[](int index);
		void swap(int loc1, int loc2);
		void set(int index, T obj);
		void remove(int at);
		bool contains(T obj);
		int indexOf(T obj);
		int lastIndexOf(T obj);
};

#ifndef USE_EXPORT_KEYWORD
   #include "ArrayList.cpp"
 #endif 

#endif /*ARRAYLIST_H_*/
